package com.xdb.sqlparser.dialect.oracle.ast.clause;

import java.util.ArrayList;
import java.util.List;

import com.xdb.sqlparser.ast.expr.SQLIdentifierExpr;
import com.xdb.sqlparser.dialect.oracle.ast.OracleSQLObjectImpl;
import com.xdb.sqlparser.dialect.oracle.ast.statement.OracleOrderByItem;
import com.xdb.sqlparser.dialect.oracle.visitor.OracleASTVisitor;

public class OracleSearchClause extends OracleSQLObjectImpl {

	public static enum Type {
		DEPTH, BREADTH
	}

	private Type type;

	private final List<OracleOrderByItem> items = new ArrayList<OracleOrderByItem>();

	private SQLIdentifierExpr orderingColumn;

	public Type getType() {
		return type;
	}

	public void setType(Type type) {
		this.type = type;
	}

	public List<OracleOrderByItem> getItems() {
		return items;
	}

	public SQLIdentifierExpr getOrderingColumn() {
		return orderingColumn;
	}

	public void setOrderingColumn(SQLIdentifierExpr orderingColumn) {
		this.orderingColumn = orderingColumn;
	}

	@Override
	public void accept0(OracleASTVisitor visitor) {
		if (visitor.visit(this)) {
			acceptChild(visitor, items);
			acceptChild(visitor, orderingColumn);
		}
		visitor.endVisit(this);
	}

}
